(function() {

  var m = window.Manager = {
    currentLocale: chrome.i18n.getMessage('@@ui_locale'),
    
    setup: function() {
      var currentLocale = m.currentLocale;
      if (currentLocale.indexOf('en') == 0) {
        currentLocale = 'en';
        $.addStyleSheet('./i18n_styles/' + currentLocale + '.css');
      }

      Welcome.setup();
      ShortcutList.setup();
      ShortcutSetting.setup();
      Tip.setup();
      
      if (!this.createdShortcut()) {
        Welcome.show();
        ShortcutList.hide();
        ShortcutSetting.hide();
      }
    },

    init: function() {},

    showOverlay: function() {
      $('#overlay').css({
        width: document.body.scrollWidth + 'px',
        height: document.body.scrollHeight + 'px'
      }).show();
    },

    hideOverlay: function() {
      $('#overlay').hide();
    },
    
    createdShortcut: function() {
      var shortcuts = ShortcutsStorage.getShortcuts();
      return Object.keys(shortcuts).length != 0;
    },

    importShortcut: function() {
      var shortcut = Fs.getShortcutData();
      if ($.type(shortcut) == 'object') {
        if (m.validateShortcut(shortcut)) {
          // Generate a id for new imported shortcut.
          var shortcutId = ShortcutSetting.generateShortcutId();
          var iconId = shortcut.iconId;

          // Storage imported shortcut id, name and path.
          ShortcutsStorage.addShortcut(shortcutId, {
            name: shortcut.name,
            path: shortcut.path,
            iconId: iconId,
            themeName: shortcut.themeName
          });

          shortcut.id = shortcutId;
          ShortcutList.addShortcut(shortcut);
          
          ShortcutList.show();
          Welcome.hide();
          Tip.alert('shortcut_import_done')
        }
      } else if (shortcut == 'non_chrome_shortcut') {
        Tip.alert('shortcut_non_chrome');
      }
    },

    validateShortcut: function(shortcut) {
      var isExist = ShortcutsStorage.isShortcutExistent(shortcut.name);
      if (isExist) {
        Tip.alert('shortcut_existent');
        return false;
      }
      return true;
    },
    
    startup: function(shortcutId) {
      var shortcut = ShortcutsStorage.getShortcut(shortcutId);
      if (shortcut) {
        var result = Fs.startup(shortcut.name, shortcut.path);
        $.log('Shortcut startup result: ' + result);
        if (result) {
          // Startup shortcut ok.
          Tip.alert('shortcut_startup_done')
        } else {
          Tip.alert('shortcut_startup_failed');
        }
      } else {
        // Save failed
        Tip.alert('shortcut_invalid');
      }
    }
  };
})();